package com.deyuanyun.pic.settings.mapper.pipe;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.deyuanyun.pic.settings.controller.dto.PipeValidateVO;
import org.apache.ibatis.annotations.Param;

import com.deyuanyun.pic.settings.controller.dto.PipeSegmentDTO;
import com.deyuanyun.pic.settings.controller.dto.PipeSegmentInfraVO;
import com.deyuanyun.pic.settings.domain.pipe.PipeSegment;

public interface PipeSegmentMapper {
    int deleteByPrimaryKey(String id);

    int insert(PipeSegment record);

    int insertSelective(PipeSegment record);

    PipeSegment selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(PipeSegment record);

    int updateByPrimaryKey(PipeSegment record);

    List<PipeSegment> selectByPipeLineId(String pipeLineId);

    List<PipeSegment> getSegmentByLineId(String lineId);

	/**
	 * 管道条件查询
	 * @param
	 * @return
	 * @throws
	 * @author axiao(xj08.dream@gmail.com)
	 * @date 2016-09-02
	 */
	List<PipeSegmentDTO> findByCondition(PipeSegmentInfraVO pipeSegmentInfra);

	/**
	 * 验证管段的名字或者代号是否重复
	 * @param pipeValidateVO
	 * @return
	 * @author axiao(xj08.dream@gmail.com)
	 * @date 2016-11-25
	 */
	int validateRepBySegment(PipeValidateVO pipeValidateVO);

	/**
	* @Description: 管段初始化：新建管段
	* @author h.x.rong
	* @date 2016年1月5日
	* @param @param pipeSegmentInfraVO
	* @param @return
	* @return List 
	 */
	void insertSegment(PipeSegmentInfraVO pipeSegmentInfra);

    
	/**
	 * 删除未发布的管段信息
	 * @param ids
	 * @return
	 * @throws
	 * @author axiao(xj08.dream@gmail.com)
	 * @date 2016-09-02
	 */
	int removeSegmentById(@Param("ids") String[] ids);


	/**
	 * 根据管道id发布管道信息
	 * @param ids
	 * @return
	 * @throws
	 * @author axiao(xj08.dream@gmail.com)
	 * @date 2016-09-02
	 */
	int updateStatus(@Param("ids") String[] ids);

    /**
     * 管段数据的批量启用、停用
     * @param ids
     * @param status 启用状态：不为空为启用
     * @return
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-01
     */
	int updateSegmentS(@Param("ids") String[] ids,@Param("status") String status);


	/**
	* @Description: 管道初始化：根据id修改数据
	* @author h.x.rong
	* @date 2016年1月5日
	* @param 
	* @return void 
	*
	 */
	void updatePieSegment(PipeSegmentInfraVO pipeSegmentInfraVO);

	List<PipeSegment> queryAllSegment(Map map);


	List<Map> querySegmentListByLineId(@Param("lineId") String lineId);
	
	
	/**
	 * 根据管道编号，和管段名称模糊查询
	 * 
	 * @param pipeLineId
	 * @param pipeSegmentName
	 * @return
	 */
	List<PipeSegment> queryPipeSegment(@Param("pipeLineId")String pipeLineId,@Param("pipeSegmentName")String pipeSegmentName);


    /**
     * 根据管道编号，和管段名称模糊查询
     * 
     * @param pipeLineId
     * @param mileage
     * @return
     */
	PipeSegment queryPipeSegmentByMileage(@Param("pipeLineId")String pipeLineId,@Param("mileage")BigDecimal mileage);

}